<?php

require_once __DIR__ . '/ControllerAbstract.php';
require_once __DIR__ . '/ControllerImagem.php';
require_once '../Models/ModelQuestao.php';
require_once '../Models/ModelAssuntoDisciplina.php';

/**
 * Description of ControllerQuestao
 *
 * @author david
 */
class ControllerQuestoes extends ControllerAbstract {

    protected $bancodedados = [];

    public function __construct($config) {
        parent::__construct($config);
    }

    /**
     * Action principal da controller
     */
    public function principal() {
        $this->render('questoes/principal');
    }

    /**
     * Action lista da controller
     */
    public function lista() {
        $orgao = new Orgao();
        $cargo = new Cargo();
        $banca = new Banca();
        $ssunto = new Assunto();
        $disciplina = new Disciplina();
        $assuntoDisciplina = new AssuntoDisciplina();
        $tipoQuestao = new TipoQuestao();


        $orgao->nome = "#";
        $cargo->nome = "#";
        $banca->nome = "#";
        $ssunto->descricao = "#";
        $disciplina->descricao = "#";
        $cargo->descricao = "#";
        $tipoQuestao->descricao = "#";

        $assuntoDisciplina->Assunto = $ssunto;
        $assuntoDisciplina->Disciplina = $disciplina;

        $questao = new Questao();
        $questao->Orgao = $orgao;
        $questao->Cargo = $cargo;
        $questao->Banca = $banca;
        $questao->AssuntoDisciplina = $assuntoDisciplina;

        $questao->descricao = "#";
        $questao->texto = "#";
        $questao->ano = "#";
        $questao->imagem = "#";
        $questao->codigo_resposta = "#";

        $result = $this->persiste($questao);
        $data[] = $result;

        $this->render('questoes/lista', $data);
    }

    /**
     * Action form da controller
     */
    public function form() {

        $cargo = new Cargo();
        $banca = new Banca();
        $orgao = new Orgao();
        $tipoQuestao = new TipoQuestao();

        $cargo->nome = "#";
        $banca->nome = "#";
        $orgao->nome = "#";
        $tipoQuestao->descricao = "#";

        $data[] = $this->persiste($cargo);
        $data[] = $this->persiste($banca);
        $data[] = $this->persiste($orgao);
        $data[] = $this->persiste($tipoQuestao);

        $assuntoDisciplina = new AssuntoDisciplina();
        $assunto = new Assunto();
        $disciplina = new Disciplina();

        $assunto->descricao = "#";
        $disciplina->descricao = "#";

        $assuntoDisciplina->codigo = "#";
        $assuntoDisciplina->Assunto = $assunto;
        $assuntoDisciplina->Disciplina = $disciplina;

        $data[] = $this->persiste($assuntoDisciplina);

        $questao = new Questao();
        $questaoRes = new Questao();
        $resultResposta = null;
        if (isset($this->get["q"])) {

            $cargoQ = new Cargo();
            $bancaQ = new Banca();
            $orgaoQ = new Orgao();
            $tipoQuestaoQ = new TipoQuestao();
            $assuntoDisciplinaQ = new AssuntoDisciplina();


            $questao->codigo = $this->get["q"];
            $resposta = new Resposta();
            $resposta->descricao = "#";

            $questaoRes->codigo = $this->get["q"];
            $resposta->Questao = $questaoRes;

            $resultResposta = $this->persiste($resposta);

            $questao->Cargo = $cargoQ;
            $questao->Banca = $bancaQ;
            $questao->Orgao = $orgaoQ;
            $questao->TipoQuestao = $tipoQuestaoQ;
            $questao->AssuntoDisciplina = $assuntoDisciplinaQ;
            $questao->ano = "#";
            $questao->imagem = "#";
            $questao->texto = "#";
            $questao->descricao = "#";
            $questao->codigo_Resposta = "#";

            $data[] = $this->persiste($questao);
            $data[] = $resultResposta;
        }

        $this->render('questoes/form', $data);
    }

    public function insert() {
        if (isset($_POST["texto"])) {
            //faz o upload da foto
            $contImagem = new ControllerImagem();

            $imagem = "";

            if ($_FILES["imagem"]["type"]) {
                $contImagem = new ControllerImagem();
                $imagem = $contImagem->upload("uploads", $_FILES);
            } else {
                $imagem = false;
            }

            $questao = new Questao();
            $cargo = new Cargo();
            $banca = new Banca();
            $assuntodisciplina = new AssuntoDisciplina();
            $orgao = new Orgao();
            $tipoquestao = new TipoQuestao;

            $cargo->codigo = $_POST["cargo"];
            $banca->codigo = $_POST["banca"];
            $assuntodisciplina->codigo = $_POST["assuntoDisciplina"];
            $orgao->codigo = $_POST["orgao"];
            $tipoquestao->codigo = $_POST["tipoquestao"];

            $questao->action = "new";
            $questao->texto = $_POST["texto"];
            $questao->Cargo = $cargo;
            $questao->AssuntoDisciplina = $assuntodisciplina;
            $questao->Orgao = $orgao;
            $questao->Banca = $banca;
            $questao->imagem = $imagem;
            $questao->TipoQuestao = $tipoquestao;
            $questao->ano = $_POST["ano"];
            $questao->descricao = $_POST["descricao"];

            $result = $this->persiste($questao);

            if ($result == true) {
                $modelQuestao = new ModelQuestao();
                $result = $modelQuestao->getUltimaQuestao();

                header("Location: " . BASE_URL . "questoes/form?q=" . $result);
            } else {
                header("Location: " . BASE_URL . "404");
            }
        } else {
            echo $result = "erro";
        }
    }

    public function update() {

        if (isset($_POST["codigo"]) && isset($_POST["cargo"]) && isset($_POST["banca"]) && isset($_POST["assuntoDisciplina"]) && isset($_POST["orgao"]) && isset($_POST["tipoquestao"]) && isset($_POST["texto"]) && isset($_POST["texto"]) && isset($_POST["ano"]) && isset($_POST["descricao"])) {
            //faz o upload da foto
            
            if ($_FILES["imagem"]["type"]) {
                $contImagem = new ControllerImagem();
                $imagem = $contImagem->upload("uploads", $_FILES);
            } else {
                $imagem = false;
            }
            
            $questao = new Questao();
            $cargo = new Cargo();
            $banca = new Banca();
            $assuntodisciplina = new AssuntoDisciplina();
            $orgao = new Orgao();
            $tipoquestao = new TipoQuestao;

            $cargo->codigo = $_POST["cargo"];
            $banca->codigo = $_POST["banca"];
            $assuntodisciplina->codigo = $_POST["assuntoDisciplina"];
            $orgao->codigo = $_POST["orgao"];
            $tipoquestao->codigo = $_POST["tipoquestao"];

            $questao->action = "update";
            $questao->codigo = $_POST["codigo"];
            $questao->texto = $_POST["texto"];
            $questao->Cargo = $cargo;
            $questao->AssuntoDisciplina = $assuntodisciplina;
            $questao->Orgao = $orgao;
            $questao->Banca = $banca;

            if ($imagem) {
                $questao->imagem = $imagem;
            }

            $questao->TipoQuestao = $tipoquestao;
            $questao->ano = $_POST["ano"];
            $questao->descricao = $_POST["descricao"];

            var_dump($questao);

            $result = $this->persiste($questao);

            if ($result == true) {
                header("Location: " . BASE_URL . "questoes/form?q=" . $_POST["codigo"]);
            } else {
                header("Location: " . BASE_URL . "404");
            }
        } else {
            echo $result = "erro";
        }
    }

    public function delete() {
        if (isset($_POST["questao"]) && !empty($_POST["questao"])) {

            $questao = new Questao();
            $questao->codigo = $_POST["questao"];
            $questao->action = "delete";

            $result = $this->persiste($questao);

            echo $result;
        } else {
            echo "erro";
        }
    }

    /**
     * 
     * Define a resposta correta
     */
    public function correct() {
        if (isset($_POST["resposta"]) && isset($_POST["questao"])) {
            $questao = new Questao();
            $questao->codigo = $_POST["questao"];
            $questao->codigo_resposta = $_POST["resposta"];
            $questao->action = "update";

            $result = $this->persiste($questao);
        }
    }

}